package com.controlier;


import com.domain.Box_data;
import com.domain.Tcp_public_data;
import com.domain.User_data;
import com.domain.Verification_code_date;
import com.mapper.Box_mysql;
import com.mapper.User_mysql;
import com.service.Public_funtion;
import com.service.check_data.Check_user_login;
import com.service.tcp.Request_wechat;
import com.service.tcp.Tcp_doing.Phone_to_Tcp_doing;
import com.service.tcp.Tcp_public_funtion;
import com.utilus.AjaxResult;
import io.netty.buffer.ByteBuf;
import io.netty.channel.ChannelHandlerContext;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.ResponseBody;

import java.util.ArrayList;
import java.util.List;

import static com.MysqlApplication.equip_list;
import static com.MysqlApplication.global_data;

//外部请求   例如web、手机、发送来的打开快递柜的请求
@Controller
public class Outside_request
{

    @Autowired
    JdbcTemplate jdbcTemplate;
    @Autowired
    private Public_funtion p;
    @Autowired
    Box_mysql box_mysql;
    @Autowired
    Phone_to_Tcp_doing p_to_t;
    @Autowired
    Check_user_login user_login;
    @Autowired
    Request_wechat request_wechat;
    @Autowired
    User_mysql user_mysql;
    @Autowired
    private Tcp_public_funtion tcp_p;

    //手机请求打开柜门
    @ResponseBody
    @PostMapping("/Phone_opendoor")
    public AjaxResult Phone_opendoor(Box_data data)
    {
//验证发来的验证数据，看看用户是不是登录状态  就是  data.getNotice()
//发送到 Phone_to_Tcp_doing 执行请求
        AjaxResult result;
        if(user_login.check(data.getNotice()))
        {
             result=p.toAjax(1);
            p.print_log("接收到手机发送的打开快递柜的要求",5);
            int code_num=p.Get_Random();
            User_data userData=new User_data();
            userData.setPhone(data.getPhone());
            List<User_data> mysql_data= new ArrayList();
            mysql_data=user_mysql.get_user(userData);
            if(mysql_data.size()>0)
            {
                User_data user_data = mysql_data.get(0);
                Verification_code_date code = new Verification_code_date();
                code.setCompany("圆通");
                code.setFirst_remark("欢迎使用呦猴快递");
                code.setStaff("如果有疑问请联系快递员"+data.getStaff());
                code.setOpenid(user_data.getOpenid());
                code.setYun_num(data.getYun_num());
                code.setPlace_long(data.getPlace()+"快递柜");
                code.setVerification_code(String.valueOf(code_num));
                code.setTime("快递将为您保持24小时");
                code.setRemark("详情点击下方“获取验证码”按钮，请在规定时限内取走您的快递");
                request_wechat.Sent_wechat_verfocation_code(code);
            }
            data.setCode(code_num);
            data.setStatus_id(1);data.setTime(p.get_DATE_String_HHmmss());
            data.setOuttime(p.get_DATE_String_HHmmss());
            box_mysql.insert_box(data);
            p_to_t.doing(data);
        }
        else {
             result = p.toAjax(0);
            p.print_log("打开柜门失败", 5);
        }

        result.put("contnt","ok");
        return result;
    }

    /**
     * 网页管理端请求打开柜门
     */

    @ResponseBody
    @PostMapping("/Web_opendoor")
    public AjaxResult Web_opendoor(Box_data data)
    {
        //验证发来的验证数据，看看用户是不是登录状态  就是  data.getNotice()
        //把放入快递的信息放入到这里
        data.setLocker_id(101220);
        p_to_t.doing(data);
        AjaxResult result=p.toAjax(1);
        p.print_log("接收到网页发送的打开快递柜的要求",5);
        return result;
    }

    /**
     * 管理端发来要求更改屏幕广告
     */
    @ResponseBody
    @PostMapping("/KDG_screen_adv")
    public AjaxResult KDG_screen_adv(Box_data data)
    {
        String name=data.getName();//快递柜名称
        String content= data.getNotice();//广告内容
        ChannelHandlerContext ctx;
        for(int i=0;i<equip_list.size();i++)
        {
            if(equip_list.get(i).getEquip_name().equals(name))
            {
                ctx=equip_list.get(i).getEquip();
                Tcp_public_data turn_data=tcp_p.equip_data_init();
                turn_data.setKind(13);
                turn_data.setOpen(1);
                turn_data.content=content.getBytes();
                ByteBuf encoded=tcp_p.tcp_to_bytebuf(ctx,turn_data);
                ctx.channel().writeAndFlush(encoded).syncUninterruptibly();
            }
        }
        AjaxResult result=p.toAjax(1);
        p.print_log("发布广告",5);
        return result;
    }


}
